package com.rizzo.back.service;

import com.rizzo.back.domain.BlogEntry;
import com.rizzo.back.domain.BlogUser;
import com.rizzo.back.exception.ApplicationException;
import com.rizzo.back.util.search.SearchDataObject;

import java.util.Date;
import java.util.List;

/**
 * TODO Insert JavaDoc!
 */
public interface BlogEntryService {

    /**
     * Method getBlogEntriesForBlogUser retrieves all the {@link BlogEntry}s for a given {@link BlogUser} and only
     * those (un)published indicated by the published boolean and created within the indicated start and end {@link java.util.Date}.
     *
     * @param blogUser of type BlogUser
     * @param startCreateDate of type Date
     * @param endCreateDate of type Date
     * @param published of type boolean
     * @return List<BlogEntry>
     */
    List<BlogEntry> getBlogEntriesOfBlogUser(BlogUser blogUser, Date startCreateDate, Date endCreateDate, boolean published) throws ApplicationException;

    /**
     * Method searchBlogEntriesOfBlogUser ...
     *
     * @param blogUser of type BlogUser
     * @param searchDataObject of type SearchDataObject
     * @return List<BlogEntry>
     */
    List<BlogEntry> searchBlogEntriesOfBlogUser(BlogUser blogUser, SearchDataObject searchDataObject) throws ApplicationException;

}
